Unity3D自带功能:摄影机 您所在的位置:网站首页 unity 摄像机参数 Unity3D自带功能:摄影机

Unity3D自带功能:摄影机

2022-05-19 16:26| 来源: 网络整理| 查看: 265

来源:https://www.jianshu.com/p/35640507f0b9 若内容不全,可点击上述链接查看来源网页,在网页中点击红色双层向下的箭头阅读全文

Unity3D本质上还是个三维游戏引擎,所以其摄影机的概念与我们在三维软件中的概念是相通的。

新建场景之后,系统会自动创建一个MainCamera,这个MainCamera就是我们场景的主摄影机。

unity_camera_01.png

主摄影机和场景视图(SceneView)的摄影机角度是不一样的,新人常常在场景视图中对好了正确的摄影机角度,然后点击“运行”,结果发现游戏画面完全不是自己想要的样子。

如果希望将主摄影机对齐我们的场景视图,只需要选择主摄影机物体,然后通过菜单:GameObject;AlignWithView就可以了。这个命令实际上会将所选择的任何物体都与场景摄影机对齐,并不仅限于对齐主摄影机。

unity_camera_02.png

这个命令附近的命令也还都蛮有用的,值得记一下快捷键:

MoveToView可以将物体移动到当前视角的正中心位置(并不会改变旋转方向),想要把场景某个角落里的物体拿过来,就可以使用这个命令,免得破坏了完美的摄影机角度;AlignViewtoSelected可以将摄影机移动到选择的物体上去,可以用来将场景摄影机与某个场景物体对齐;ToggleActiveState可以激活/取消激活游戏物体,类似于三维软件中的“隐藏”,但实际上跟隐藏不是一回事。摄影机相关参数unity_camera_03.pngClearFlags:决定哪些屏幕部分将会被清除,当使用多个摄影机来显示不同游戏元素时非常有用。Skybox:单个摄影机时选择,表示背景使用天空盒SolidColor:单个摄影机时选择,表示背景使用单一颜色DepthOnly:多个摄影机时选择,根据Depth决定哪个摄影机所渲染的画面在上方,越高的Depth值越处于上方Don'tClear:该摄影机在切换帧的时候不清除前一帧的颜色及深度信息,也就是说,会显示为叠加重影的效果Background:摄影机背景颜色(当使用SolidColor时,通过Background参数设置具体颜色)CullingMask:通过Layer(层)的设置来屏蔽一部分游戏物体在此摄影机中不被渲染Projection:摄影机投影方式Perspective:透视摄影机Orthographic:正交摄影机FieldofView:透视摄影机的视野,越大越透视Size:正交摄影机的尺寸,越大越能囊括更多场景区域ClippingPlanes:设置摄影机的最远和最近渲染距离ViewportRect:设置摄影机渲染其视野画幅的哪一部分Depth:摄影机的深度RenderingPath:使用哪种渲染路径TargetTexture:可以将摄影机的画面传递给一个特殊的贴图,用来制作比如后视镜、监视器等效果OcclusionCulling:AllowHDR:允许渲染高动态色彩画面AllowMSAA:允许进行硬件抗锯齿TargetDisplay:目标显示器,可以设置1-8多摄影机设置

在游戏中设置多个摄影机是很常见的操作,最主要的功能是将不同“层次”的图像叠加显示给用户。

比如游戏中的UI元素,通常就是用专门的摄影机来渲染显示,只不过在Unity3D中,UI功能是其内置的功能模块,所以无需用户自己去设置UI摄影机。

unity_camera_05.png

可以看到场景视图中UI元素所占用的区域在我们实际场景的旁边而且非常巨大(这是因为Unity3D的UI元素1像素对应场景中1单位空间),但在游戏视图中,UI和场景的图像之间是叠加的关系。

如果希望在场景视图中叠加非UI元素,则需要另外添加一个新的摄影机,设置ClearFlags为Depthonly,并将Depth值设置得比MainCamera要大。

unity_camera_08.png

我们可以把第二摄影机设置为正交摄影机,也可以单独为其视野内游戏物体设置光照。这里我使用的是聚光灯,避免对主摄影机画面造成影响。

unity_camera_06.png

这样我们就可以看到,第二个摄影机中的图像被叠加到主摄影机图像上了。

unity_camera_07.png摄影机输出贴图的操作方法

Unity支持将摄影机的画面作为贴图显示在场景物体表面,比如汽车反光镜的影像,或者监控画面影像等等。具体操作方法如下:

首先在Assets文件夹内创建一个RenderTexture资源,设置其贴图模式(Dimension)、贴图尺寸(Size)、是否使用抗锯齿(Anti-Aliasing)、色彩格式(ColorFormat)等等参数。

unity_camera_09.pngunity_camera_10.png

然后在场景中创建一个新的摄影机,设置其TargetTexture参数为刚才创建的RenderTexture资源。

unity_camera_13.pngunity_camera_11.png

最后将这个RenderTexture如同普通贴图一样用在某个Material的颜色通道上,再将这个Material指定给某个场景物体(比如我新建的一个简单Quad面片),我们就能在获得这个摄影机的事实画面了。

unity_camera_12.png摄影机后期特效

摄影及后期特效主要指对摄影机渲染结果进行一些后期处理,以增强画面效果,比如整体画面的校色、加辉光、加模糊等等。

Unity在不同版本中处理摄影机后期特效的方式略有所不同。当前版本主要使用官方插件PostProcessingStack来进行,比起上一版本中直接添加特效Script的方式,要显得简单明了得多。

unity_post_01.pngunity_post_02.png

安装完PostProcessingStack插件之后,就可以为摄影机物体添加一个Post-ProcessingBehaviour的组件,这个组件需要调用一个Profile文件来执行后期特效。

unity_post_03.png

在Assets文件夹中创建一个Post-ProcessingProfile资源,然后将这个资源拖到Inspector面板中Post-ProcessingBehaviour组件上指定给Profile参数。

unity_post_04.png

双击Profile文件,在Inspector中可以看到所有可用的后期效果都被集成在这里了:

unity_post_05.png

Fog为DiferredRenderingPath激活雾效,在ForwardRenderingPath下无任何作用

Antialiasing添加画面抗锯齿。同样也是为DiferredRenderingPath所准备,因为ForwardRenderingPath可以激活硬件抗锯齿,但DiferredRenderingPath无法享受这一功能。

AmbientOcclusion相对而言比较廉价的屏幕环境排除效果。

ScreenSpaceReflection可以获得一些屏幕空间的反射,是通过法线来计算的,比单纯材质的反射要多一点细节。

DepthofField激活景深效果,挺常用的。

MotionBlur激活运动模糊效果。

EyeAdaptation可以根据场景亮度来自动调节曝光度,也就是模拟人眼瞳孔自动收缩的视觉效果。场景突然变得很亮时会降低曝光,让玩家看清楚场景画面。

Bloom激活辉光效果

ColorGrading校色,这里提供的选项还蛮专业的。

UserLut色彩匹配。用户可以在PS等其他软件中进行校色工作,然后生成一个LUT图示给Unity,然后Unity就会根据这个LUT图示中的颜色变化来匹配其他软件中的校色效果。

ChromaticAberration模拟一些老旧镜头在边缘有色彩分离、模糊、变形等效果

Grain激活全屏幕的噪点

Vignette激活边缘暗化效果

Dithering

为了保证后期效果得到完美体现,通常要将摄影机和渲染质量设置一下:

摄影机的RenderingPath修改为Deferred取消摄影机AllowMSAA的勾选,Deferred方式下MSAA不起作用勾选上摄影机的AllowHDR的勾选在Quality面板中同样取消掉Anti-Aliasing的设置


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有